<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  
</body>
</html>
<script>
  let  obj = {
    name:'珠峰',
    age:11,
    sex:1
  }
  // Object.defineProperty(obj,'qqq',{
  //   value:666,
  //   enumerable:true,// 是否可枚举，默认 false
  //   writable:true,// 是否可写  可更改  默认false
  //   configurable: true// 是否可删除  delete删除  默认false
  // });
  // console.log(obj)

  // var val = "你好"
  // Object.defineProperty(obj,'qqq',{
  //   enumerable:true,
  //   get(){
  //     // 没当 外界使用 qqq这属性的时候  都会执行这个方法  外界获取的值 就是 这个函数的返回值
  //     console.log('get方法执行了')
  //     // return '你好'
  //     return val
  //   },
  //   set(v){
  //     // 每当 外界给 qqq 属性 赋值的时候 就会触发这个函数， v对应的就是外界赋予的值
  //     console.log('set函数执行了')
  //     console.log(v)
  //     // obj.qqq = v  这么些就是一个死循环
  //     val = v;
  //   }
  // });

  // Object.keys(obj).forEach(key=>{
  //   // console.log(key)
  //   let value =  obj[key];
  //   Object.defineProperty(obj,key,{
  //     enumerable:true,
  //     get(){
  //       // return obj[key]
  //       return value
  //     },
  //     set(val){
  //       value = val;
  //     }
  //   })
  // });


  var obj2 = new Proxy(obj,{
    get(target,key){
      // target 就是我们的obj
      console.log('get')
      return target[key]
    },
    set(target,key,val){
      target[key] = va;l
    }
  });



</script>